<?php
    class CartController extends Main_Controller_Action
    {
        private $_arrParam;
        private $_model;
        private $_validate;
        
        public function init()
        {
            $this->loadTemplates();
            $this->_arrParam = $this->_request->getParams();
            $this->_model = new Default_Model_Cart();
            $this->_validate = new Default_Form_ValidateCart();
            $this->view->keywords = 'Bảo Toàn, nội thất, Bao Toan, noi that, đặt hàng, dat hang, mua hàng, mua hang, giỏ hàng, gio hang';
            $this->view->description = 'Nội thất Bảo Toàn - Đặt hàng';
        }
        
        public function indexAction()
        {
            $this->view->headTitle('Nội thất Bảo Toàn - Mua hàng');
            if(!empty($this->_arrParam['id'])) {
                $id = (int) $this->_arrParam['id'];
                $this->_model->addToCart($id, 1);
                $this->_redirect('mua-hang');
            }
            
            if($this->_request->isPost()) {
                $fullname   = trim(strip_tags($this->_arrParam['fullname']));
                $address    = trim(strip_tags($this->_arrParam['address']));
                $email      = trim(strtolower(strip_tags($this->_arrParam['email'])));
                $phone      = trim(strip_tags($this->_arrParam['phone']));
                $description= trim(strip_tags($this->_arrParam['description']));
                $flag       = true;
                
                if($this->_validate->validFullname($fullname)) {
                    $this->view->fullnameValue = $fullname;
                }
                else {
                    $this->view->errorFullname = 'Họ và tên không được để trống và tối đa 100 kí tự';
                    $flag = false;
                }
                if($this->_validate->validAddress($address)) {
                    $this->view->addressValue = $address;
                }
                else {
                    $this->view->errorAddress = 'Địa chỉ không được để trống và tối đa 200 kí tự';
                    $flag = false;
                }
                if($this->_validate->validEmail($email)) {
                    $this->view->emailValue = $email;
                }
                else {
                    $this->view->errorEmail = 'Địa chỉ email không hợp lệ';
                    $flag = false;
                }
                if($this->_validate->validPhone($phone)) {
                    $this->view->phoneValue = $phone;
                }
                else {
                    $this->view->errorPhone = 'Điện thoại không được để trống và tối đa 15 kí tự';
                    $flag = false;
                }
                
                if($flag == true) {
                    $strFlex = new Zendvn_Filter_RemoveCircumflex();
                    $common = new Admincp_Model_Common();
                    $create_date = date('Y-m-d H:i:s');
                    $data = array(
                        'fullname' => $fullname,
                        'address' => $address,
                        'email' => $email,
                        'phone' => $phone,
                        'description' => $description,
                        'create_date' => $create_date,
                        'status' => 2,
                        'fullname_plaintext' => strtolower($strFlex->filter($fullname)),
                        'address_plaintext' => strtolower($strFlex->filter($address)),
                    );
                    $cart_id = $this->_model->saveItemCart($data);
                    $max  = count($_SESSION['cart']);
            		for($i = 0; $i < $max ; $i++) {
            			$product_id  = $_SESSION['cart'][$i]['product_id'];
            			$quantity    = $_SESSION['cart'][$i]['quantity'];
                        $data_info = array(
                            'cart_id' => $cart_id,
                            'product_id' => $product_id,
                            'quantity' => $quantity,
                        );
                        $this->_model->saveItemCartInfo($data_info);
            		}
                    
                    // Send mail
                    $tr = new Zend_Mail_Transport_Smtp('smtp.gmail.com', array(
                        'auth' => 'login',
                        'username' => 'thongbao.baotoan@gmail.com',
                        'password' => '123456aA@',
                        'ssl' => 'ssl',
                        'port' => 465)
                    );
                    Zend_Mail::setDefaultTransport($tr);
                    $message = 'Thời gian gửi mail: '.$common->formatDatetime($create_date).'<br/><br/>';
                    $message .= 'Thông tin đặt hàng:<br/>';
                    $message .= 'Họ và tên: '.$fullname.'<br/>';
                    $message .= 'Địa chỉ: '.$address.'<br/>';
                    $message .= 'Email: '.$email.'<br/>';
                    $message .= 'Điện thoại: '.$phone.'<br/>';
                    $message .= 'Nội dung: '.$description.'<br/>';
                    $message .= '<table border="1">';
                    $message .= '<tr>';
                    $message .= '<td>STT</td>';
                    $message .= '<td>Tên sản phẩm</td>';
                    $message .= '<td>Kích thước</td>';
                    $message .= '<td>Số lượng</td>';
                    $message .= '<td>Giá (VNĐ)</td>';
                    $message .= '<td>Tổng số (VNĐ)</td>';
                    $message .= '<td>VAT (VNĐ)</td>';
                    $message .= '</tr>';
                    
                    $cart_info = new Admincp_Model_Cart();
                    $i = 0;
                    $total = 0;
                    $total_vat = 0;
                    foreach($cart_info->getCartInfo($cart_id) as $result) {
                        $i++;
                        $total += $result['price']*$result['quantity'];
                        $message .= '<tr>';
                        $message .= '<td>'.$i.'</td>';
                        $message .= '<td>'.$result['name'].'</td>';
                        $message .= '<td>'.$result['size'].'</td>';
                        $message .= '<td style="text-align: center;">'.$result['quantity'].'</td>';
                        $message .= '<td style="text-align: right;">'.$common->formatMoney($result['price']).'</td>';
                        $message .= '<td style="text-align: right;">'.$common->formatMoney($result['price']*$result['quantity']).'</td>';
                        $message .= '<td style="text-align: right;">'.$common->formatMoney(($result['price']*$result['quantity'] + ($result['price']*$result['quantity']*10)/100)).'</td>';
                        $message .= '</tr>';
                    }
                    $message .= '<tr>';
                    $message .= '<td colspan="5" style="text-align: right;">Tổng tiền</td>';
                    $message .= '<td style="text-align: right;"><b>'.$common->formatMoney($total).'</b></td>';
                    $message .= '<td style="text-align: right;"><b>'.$common->formatMoney(($total + $total * 10 / 100)).'</b></td>';
                    $message .= '</tr>';
                    $message .= '</table>';
                    $mail = new Zend_Mail('UTF-8');
                    $mail->setFrom($email, $fullname);
                    $mail->addTo('vinhbt.vn9x@gmail.com');
                    $mail->setSubject('Thong bao dat hang');
                    $mail->setBodyHtml($message);
                    try{
                        $mail->send();
                    }
                    catch(Exception $e){
                        $this->_redirect('');
                    }
                    $this->_redirect('dat-hang-thanh-cong');
                }
            }
        }
        
        public function processAction()
        {
            if($_POST['continue']) {
                $this->_redirect('');
            }
            if($_POST['clear']) {
                unset($_SESSION['cart']);
                $this->_redirect('');
            }
            if($_POST['update']) {
                $max = count($_SESSION['cart']);
        		for($i = 0; $i < $max; $i++){
        			$product_id = $_SESSION['cart'][$i]['product_id'];
                    if(!is_numeric($this->_arrParam['product'.$product_id])) {
                        continue;
                    }
                    else {
                        $quantity = intval($this->_arrParam['product'.$product_id]);
                    }
        			if($quantity > 0 && $quantity <= 999){
        				$_SESSION['cart'][$i]['quantity'] = $quantity;
        			}
                    else if($quantity == 0) {
                        $this->_model->removeProduct($product_id);
                    }
        		}
                $this->_redirect('mua-hang');
            }
        }
        
        public function removeAction()
        {
            $id = (int) $this->_arrParam['id'];
            $this->_model->removeProduct($id);
            $this->_redirect('mua-hang');
        }
        
        public function successAction()
        {
            $this->_helper->layout->setLayout('success_layout');
            $this->view->headTitle('Nội thất Bảo Toàn - Đặt hàng thành công');
        }
    }
